#if !defined(__APP_BUFFER)
#define __APP_BUFFER
#define APP_BUFFER_MAX_LEN 1024
#include <pthread.h>
typedef struct {
    char *data_ptr; // 数据指针
    int data_len;// 数据长度
    int total_len;//  总长度
} sub_app_buffer_t; //子缓冲区结构体

typedef struct {
    sub_app_buffer_t  *sub_buffer[2]; //子缓冲区
    int read_index; //读缓冲区下标
    int write_index;//写缓冲区下标
    pthread_mutex_t read_lock; //读锁
    pthread_mutex_t swap_lock; //交换锁


} app_buffer_t;

/**
 * @brief 创建缓冲区
 * 
 * @return app_buffer_t 
 */
app_buffer_t *app_buffer_init();


/**
 * @brief 向缓冲区写入数据
 * @param app_buffer_t* 缓冲区指针
 * @return int 写入成功返回0，失败返回-1
 */
int app_buffer_write(app_buffer_t *buffer, char *write_data, int write_data_len);

/**
 * @brief 从缓冲区读取数据
 * @param app_buffer_t* 缓冲区指针
 * @param  char* 读取数据容器
 * @param int 读取数据容器长度
 * @return int 读取成功返回 实际的数据长度，失败返回-1
 */
int app_buffer_read(app_buffer_t *buffer, char *read_buff, int read_buff_len);



/**
 * @brief 缓冲区的销毁
 * @param app_buffer_t* 缓冲区指针
 */
void app_buffer_destroy(app_buffer_t *buffer);

#endif // __APP_BUFFER
